﻿Public Enum TaskleistenAnzeige
    Taskleiste
    TrayMenü
    Versteckt
End Enum
Public Class ObjektOptionsMenü
    Inherits ObjektFormMenü
    ''' <summary>
    ''' Nur OBjekte ganz unten hinzufügen sonst stürzt das Menü ab!
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()
        MyBase.New(New ObjektButton() {}, Nothing, New ObjektNumericUpDown() {}, Nothing, New ObjektValueSchieber() {}, New ObjektMultiValue() {}, New ObjektCheckBox() {})
        If My.Settings.Verhältnis = Hauptmenü.Breitbild Then
            Objektverwalter.LoadHintergrund(My.Settings.Resourcenpfad + "Hintergründe\OptionenGroß.png")
        Else
            Objektverwalter.LoadHintergrund(My.Settings.Resourcenpfad + "Hintergründe\Optionen.png")
        End If
        Dim PDrittel As PointF = New PointF(1 / 3, 1 / 3)
        Dim P As New ObjektPanel2D(New Rectangle(Hauptmenü.Rechteck.Width / 3, 0, Hauptmenü.Rechteck.Width / 3, Hauptmenü.Rechteck.Height), PDrittel, 3, False)
        'Hier werden diese komischen Buttons erstellt
        Dim Y As Integer = Hauptmenü.MainMenü.MalPanel.Height / 2 - 22 * 0.5
        Dim X As Integer = P.Rechteck.Width / 2 - 54
        NeuButton(X, Y - 60, My.Settings.Resourcenpfad + "Objekte\Button.png", "Einheiten Menü", PDrittel, , , , P)
        NeuButton(X, Y - 30, My.Settings.Resourcenpfad + "Objekte\Button.png", "KO Menü", PDrittel, , , , P)
        NeuButton(X, Y, My.Settings.Resourcenpfad + "Objekte\Button.png", "Zurück", PDrittel, , , , P)
        NeuButton(X, Y + 30, My.Settings.Resourcenpfad + "Objekte\Button.png", "Speichern", PDrittel, , , , P)
        NeuPanel(P)

        Dim PanelLinks As New ObjektPanel2D(New Rectangle(0, 0, Hauptmenü.Rechteck.Width / 3, Hauptmenü.Rechteck.Height), PDrittel, 1, False)
        Dim PanelRechts As New ObjektPanel2D(New Rectangle(Hauptmenü.Rechteck.Width * 2 / 3, 0, Hauptmenü.Rechteck.Width / 3, Hauptmenü.Rechteck.Height), PDrittel, 1, False)

        'Bitte hier nichts verändern außer die Positionen danke
        'SpielGeschwindigkeit
        NeuLabel(10, 180, New String() {"Spielgeschwindigkeit"}, New PointF(1 / 3, 0), PanelRechts)
        neuNUD(My.Settings.SpielGeschwindigkeit, 1, 100, New Point(150, 180), My.Settings.Resourcenpfad + "Objekte\NUD.png", 1, New PointF(1 / 3, 0), PanelRechts)
        'ScrollEmpfindlichkeit
        NeuLabel(10, 200, New String() {"Scrollen"}, New PointF(1 / 3, 0), PanelRechts)
        neuNUD(My.Settings.ScrollEmpfindlichkeit * 10, 1, 100, New Point(150, 200), My.Settings.Resourcenpfad + "Objekte\NUD.png", 1, New PointF(1 / 3, 0), PanelRechts)
        'MausUmkehren
        NeuLabel(10, 220, New String() {"Scrollen umkehren"}, New PointF(1 / 3, 0), PanelRechts)
        If My.Settings.MausUmkehren > 0 Then
            NeuCheckBoxen(150, 220, "CheckBox", New PointF(1 / 3, 0), False, PanelRechts)
        Else
            NeuCheckBoxen(150, 220, "CheckBox", New PointF(1 / 3, 0), True, PanelRechts)
        End If
        'Textfließgeschwindigkeit
        NeuLabel(10, 240, New String() {"Textgeschwindigkeit"}, New PointF(1 / 3, 0), PanelRechts)
        neuNUD(My.Settings.SprachSensitivität * 10, 1, 100, New Point(150, 240), My.Settings.Resourcenpfad + "Objekte\NUD.png", 1, New PointF(1 / 3, 0), PanelRechts)
        'Autospeichern
        NeuLabel(10, 200, New String() {"Autospeichern"}, New PointF, PanelLinks)
        NeuCheckBoxen(150, 200, "CheckBox", New PointF, My.Settings.Autospeichern, PanelLinks)
        'KampfAnimationen
        NeuLabel(10, 120, New String() {"Kampfanimationen"}, New PointF, PanelLinks)
        NeuCheckBoxen(150, 120, "CheckBox", New PointF, My.Settings.KampfAnimationen, PanelLinks)
        'BesetzungsAnimation
        NeuLabel(10, 140, New String() {"Besetzungsanimationen"}, New PointF, PanelLinks)
        NeuCheckBoxen(150, 140, "CheckBox", New PointF, My.Settings.BesetzungsAnimation, PanelLinks)
        'Musik
        NeuLabel(10, 160, New String() {"Stumm"}, New PointF, PanelLinks)
        NeuCheckBoxen(150, 160, "CheckBox", New PointF, Not My.Settings.MusikSound, PanelLinks)
       
        'Die Sprache 
        NeuLabel(10, 100, New String() {"Sprache"}, New PointF(1 / 3, 0), PanelRechts)
        NeuStringUpDown(150, 100, My.Settings.Resourcenpfad + "Objekte\NUD.png", [Enum].GetNames(Sprachen.Deutsch.GetType), My.Settings.Sprache, New PointF(1 / 3, 0), PanelRechts)
        'SprachSensitivität
        NeuLabel(10, 130, New String() {"Sprachsenivität"}, New PointF(1 / 3, 0), PanelRechts)
        neuNUD(My.Settings.SprachSensitivität * 100, 0, 100, New Point(150, 130), My.Settings.Resourcenpfad + "Objekte\NUD.png", 1, New PointF(1 / 3, 0), PanelRechts)
        'SprachZuhören
        NeuLabel(10, 160, New String() {"Zuhören"}, New PointF(1 / 3, 0), PanelRechts)
        NeuCheckBoxen(150, 160, "CheckBox", New PointF(1 / 3, 0), My.Settings.SprachZuhören, PanelRechts)
        'Autor
        NeuLabel(10, 220, New String() {Sprachconverter.Translate("Nickname") + " :"}, New PointF, PanelLinks)
        NeuTextFeld(150, 220, 165, New PointF(0, 0), PanelLinks)
        Textboxen(0).SetText(My.Settings.Autor)
        'Spielmodus
        NeuLabel(10, 260, New String() {Sprachconverter.Translate("Spielmodus") + " :"}, New PointF, PanelLinks)
        NeuDropDownMenü(150, 260, New String() {"Advance Wars", "Advance Wars 2", "Advance Wars DS", "Commander Wars", "Advance Wars DC", "Commander Wars 2"}, New PointF, PanelLinks)
        DropDownMenüs(0).SetItem(My.Settings.CommanderWarsGameMoodus)

        NeuLabel(10, 280, New String() {Sprachconverter.Translate("Terrain Style") + " :"}, New PointF, PanelLinks)
        NeuDropDownMenü(150, 280, New String() {"Advance Wars", "Advance Wars 2", "Commander Wars", "Advance Wars DC", "Commander Wars 2", "Custom Terrain 1", "Custom Terrain 2", "Custom Terrain 3"}, New PointF, PanelLinks)
        DropDownMenüs(1).SetItem(My.Settings.TerrainStyle)
        'Vollbildschirm
        NeuLabel(10, 270, New String() {Sprachconverter.Translate("Vollbild") + ":"}, New PointF(1 / 3, 0), PanelRechts)
        NeuCheckBoxen(150, 270, "CheckBox", New PointF(1 / 3, 0), Not My.Settings.Fenstermodus, PanelRechts)
        'Spiel aufzeichen
        NeuLabel(10, 300, New String() {Sprachconverter.Translate("Aufzeichnen") + ":"}, New PointF(1 / 3, 0), PanelRechts)
        NeuCheckBoxen(150, 300, "CheckBox", New PointF(1 / 3, 0), My.Settings.Aufzeichnen, PanelRechts)
        'Infomenü
        NeuLabel(10, 330, New String() {Sprachconverter.Translate("Infomenü") + ":"}, New PointF(1 / 3, 0), PanelRechts)
        NeuCheckBoxen(150, 330, "CheckBox", New PointF(1 / 3, 0), My.Settings.InfoMenü, PanelRechts)

        'Auto Resize
        NeuLabel(10, 360, New String() {Sprachconverter.Translate("Auto-Resize") + ":"}, New PointF(1 / 3, 0), PanelRechts)
        NeuCheckBoxen(150, 360, "CheckBox", New PointF(1 / 3, 0), My.Settings.AutoResizeWindow, PanelRechts)

        'Anzeige Ort des Symbols
        NeuLabel(10, 390, New String() {Sprachconverter.Translate("Icon") + " :"}, New PointF(1 / 3, 0), PanelRechts)
        NeuDropDownMenü(150, 390, [Enum].GetNames(TaskleistenAnzeige.Taskleiste.GetType), New PointF(1 / 3, 0), PanelRechts)
        DropDownMenüs(2).SetItem(My.Settings.TaskAnzeigenModus)

        'Hintergrundmusik
        NeuLabel(10, 180, New String() {"Hintergrundsmusik"}, New PointF, PanelLinks)
        NeuCheckBoxen(150, 180, "CheckBox", New PointF, My.Settings.Hintergrundmusik, PanelLinks)
        'Ab hier dürfen neue Objekte eingefügt werden
        'IP Server Host!
        NeuLabel(10, 300, New String() {Sprachconverter.Translate("Server IP") + " :"}, New PointF, PanelLinks)
        NeuTextFeld(150, 300, 165, New PointF(0, 0), PanelLinks)
        Textboxen(1).SetText(My.Settings.LobbyServerIP)
        'Server Host oder Server Client
        NeuLabel(10, 330, New String() {Sprachconverter.Translate("Host") + ":"}, New PointF(), PanelLinks)
        NeuCheckBoxen(150, 330, "CheckBox", New PointF(), My.Settings.LobbyHost, PanelLinks)

        'So die beiden Panels hinzufügen
        NeuPanel(PanelLinks)
        NeuPanel(PanelRechts)
    End Sub

    Public Overrides Sub Frame()

    End Sub
    Public Overrides Sub IniMenü()

    End Sub

    Public Overrides Sub KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        Select Case e.KeyCode
            Case Keys.Escape
                ButtonGeklicktLinks("Zurück")
        End Select
    End Sub
    Public Overrides Sub Malen()
        MyBase.ObjekteMalen()
    End Sub
    Public Overrides Sub MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Select Case e.Button
            Case Windows.Forms.MouseButtons.Left
                checkMouseDownObjekte(ObjektMaus.XKoordinate, ObjektMaus.YKoordinate)
        End Select
    End Sub
    Public Overrides Sub MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        MouseMoveObjekte(e.X, e.Y)
    End Sub
    Public Overrides Sub MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Select Case e.Button
            Case Windows.Forms.MouseButtons.Left
                ButtonGeklicktLinks(checkMouseUPObjekte(ObjektMaus.XKoordinate, ObjektMaus.YKoordinate))
        End Select
    End Sub
    Public Sub ButtonGeklicktLinks(ByVal Effekt As String)
        If Effekt = Nothing Then
            Exit Sub
        End If
        Select Case Effekt.ToLower
            Case "zurück"
                Hauptmenü.Ini(Hauptmenü.Formmodi.Hauptmenü)
            Case "speichern"
                SaveOptions()
            Case "ko menü"
                Hauptmenü.Ini(Hauptmenü.Formmodi.KOZufallMenü)
            Case "einheiten menü"
                Hauptmenü.Ini(Hauptmenü.Formmodi.EinheitenAuswahlMenü)
        End Select
    End Sub
    Public Sub SaveOptions()
        'NUDS auslesen
        My.Settings.SpielGeschwindigkeit = NUDS(0).GetValue
        My.Settings.ScrollEmpfindlichkeit = NUDS(1).GetValue / 10
        My.Settings.Textfließgeschwindigkeit = NUDS(2).GetValue / 10
        My.Settings.SprachSensitivität = NUDS(3).GetValue / 100
        'Checkboxen auslesen.
        If CheckBoxen(0).Checked = False Then
            My.Settings.MausUmkehren = 1
        Else
            My.Settings.MausUmkehren = -1
        End If
        My.Settings.Autospeichern = CheckBoxen(1).Checked
        My.Settings.KampfAnimationen = CheckBoxen(2).Checked
        My.Settings.BesetzungsAnimation = CheckBoxen(3).Checked
        My.Settings.MusikSound = Not CheckBoxen(4).Checked
        If My.Settings.MusikSound = False Then
            MusikEngine.Dispose()
        End If
        Dim AlteSprache As Sprachen = My.Settings.Sprache
        My.Settings.SprachZuhören = CheckBoxen(5).Checked
        'SUDS auslesen
        My.Settings.Sprache = [Enum].Parse(Sprachen.Deutsch.GetType, SUDS(0).GetValue)
        Dim AlterModus As Integer = My.Settings.CommanderWarsGameMoodus
        Select Case DropDownMenüs(0).GetItem
            Case "Advance Wars"
                My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWars
            Case "Advance Wars 2"
                My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWars2
            Case "Advance Wars DS"
                My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDS
            Case "Commander Wars"
                My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.CommanderWars
            Case "Advance Wars DC"
                My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.AdvanceWarsDC
            Case "Commander Wars 2"
                My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.CommanderWars2
            Case Else
                My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.CommanderWars
        End Select
        Dim AlterTStyle As TerrainStyle = My.Settings.TerrainStyle
        Select Case DropDownMenüs(1).GetItem
            Case "Advance Wars"
                My.Settings.TerrainStyle = TerrainStyle.AdvanceWars
            Case "Advance Wars 2"
                My.Settings.TerrainStyle = TerrainStyle.AdvanceWars2
            Case "Commander Wars"
                My.Settings.TerrainStyle = TerrainStyle.CommanderWars
            Case "Advance Wars DC"
                My.Settings.TerrainStyle = TerrainStyle.AdvanceWarsDC
            Case "Commander Wars 2"
                My.Settings.TerrainStyle = TerrainStyle.CommanderWars2
            Case "Custom Terrain 1"
                My.Settings.TerrainStyle = TerrainStyle.CustomTerrainstyle1
            Case "Custom Terrain 2"
                My.Settings.TerrainStyle = TerrainStyle.CustomTerrainstyle2
            Case "Custom Terrain 3"
                My.Settings.TerrainStyle = TerrainStyle.CustomTerrainstyle3
            Case Else
                My.Settings.TerrainStyle = TerrainStyle.CommanderWars
        End Select
        If My.Settings.CommanderWarsGameMoodus <> AlterModus Or AlterTStyle <> My.Settings.TerrainStyle Then
            'wir müssen die neuen Texturen holen.
            Objektverwalter.LoadNewGameModus(AlterTStyle)
        End If
        If My.Settings.Sprache <> AlteSprache Then
            Objektverwalter.KOTexturenLaden()
        End If
        'Neue Sprache Laden
        Sprachconverter.LoadLanguage()
        'Autor festlegen
        My.Settings.Autor = Textboxen(0).GetText
        'Taskleisten Anzeige Modus
        My.Settings.TaskAnzeigenModus = [Enum].Parse(TaskleistenAnzeige.Taskleiste.GetType, DropDownMenüs(2).GetItem)
        If My.Settings.TaskAnzeigenModus = TaskleistenAnzeige.Versteckt Then
            Cursor.Show()
            Select Case My.Settings.Sprache
                Case Sprachen.Deutsch
                    If Not MsgBox("Bist du sicher, dass du den Versteckten Modus aktivieren willst?" + Environment.NewLine + "Das Spiel wird dann weder in der Taskleiste, noch in dem Try-Menü angezeigt. wenn du es Minimierst, Maximierst, oder Schließt, wird es nicht beendet, sondern nur Unsichtbar! Es ist dann auch nicht mehr im Task-Manager unter Anwendungen zu sehen, nur noch unter Prozesse ist es aufgelistet" + Environment.NewLine + Environment.NewLine + "WICHTIG!!!: um das Fenster wieder zu aktivieren, musst du GENAU im Sekundentakt ""commander wars"" eingeben, dann erscheint es wieder!", MsgBoxStyle.OkCancel, "Versteckten Modus Aktivieren?") = MsgBoxResult.Ok Then
                        My.Settings.TaskAnzeigenModus = TaskleistenAnzeige.Taskleiste
                    End If
                Case Sprachen.English
                    If Not MsgBox("Are you sure, that you want to enable the hidden mode?" + Environment.NewLine + "The game will not be shown. Neither in the taskbar, nor in the tray menu, nor in the Taskmanager at ""Applications"". It will be only shown in the Taskmanager at ""Processes""! If you minimize, maximize, or close the game, it will become invisible!" + Environment.NewLine + Environment.NewLine + "IMPORTANT!!!: to activate the game, you have to enter the Code ""commander wars"" (with space) accuratly at the frequency of one secound. Then it will become visible again.", MsgBoxStyle.OkCancel, "activate Hidden-Mode?") = MsgBoxResult.Ok Then
                        My.Settings.TaskAnzeigenModus = TaskleistenAnzeige.Taskleiste
                    End If
                Case Else
                    If Not MsgBox("Are you sure, that you want to enable the hidden mode?" + Environment.NewLine + "The game will not be shown. Neither in the taskbar, nor in the tray menu, nor in the Taskmanager at ""Applications"". It will be only shown in the Taskmanager at ""Processes""! If you minimize, maximize, or close the game, it will become invisible!" + Environment.NewLine + Environment.NewLine + "IMPORTANT!!!: to activate the game, you have to enter the Code ""commander wars"" (with space) accuratly at the frequency of one secound. Then it will become visible again.", MsgBoxStyle.OkCancel, "activate Hidden-Mode?") = MsgBoxResult.Ok Then
                        My.Settings.TaskAnzeigenModus = TaskleistenAnzeige.Taskleiste
                    End If
            End Select
            Cursor.Hide()
        End If
        'Vollbild
        If Not My.Settings.TaskAnzeigenModus = TaskleistenAnzeige.Taskleiste Then CheckBoxen(6).Checked = False 'nur zum sichergehen. Das verstecken und so ist nur mit dem Fenstermodus kompatibel!
        Dim Alt As Boolean = My.Settings.Fenstermodus
        My.Settings.Fenstermodus = Not CheckBoxen(6).Checked
        If Alt <> My.Settings.Fenstermodus Then
            If My.Settings.Fenstermodus Then
                Hauptmenü.MainMenü.Size = New Size(800, 600)
            End If
            Hauptmenü.ChangeWindowMode()
        End If
        'Aufzeichnungen
        My.Settings.Aufzeichnen = CheckBoxen(7).Checked
        'Infomenü
        My.Settings.InfoMenü = CheckBoxen(8).Checked
        'Autoresize
        My.Settings.AutoResizeWindow = CheckBoxen(9).Checked
        'Hintergrundsmusik
        My.Settings.Hintergrundmusik = CheckBoxen(10).Checked
        If My.Settings.Hintergrundmusik = False Then
            MusikEngine.MusikStop()
        End If
        My.Settings.LobbyServerIP = Textboxen(1).GetText
        My.Settings.LobbyHost = CheckBoxen(11).Checked

        My.Settings.Save()
        'Ini Speichern.
        frmSplashScreen.MySettingsIniSave()
        Hauptmenü.AktualisierenTaskbar()
        'Optionen Aktualisieren
        Hauptmenü.Ini(Hauptmenü.Formmodi.Optionen)

    End Sub


    Public Overrides Sub MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    End Sub
    Public Overrides Sub SetMausBild()

    End Sub

    Public Overrides Sub SprachEingabe(ByVal Eingabe As String)
        ButtonGeklicktLinks(Eingabe.ToLower)
    End Sub
    Public Overrides Sub ChangeWindowSize(ByVal PosChange As System.Drawing.Point)
        MyBase.ChangeWindowSizeObjekte(PosChange)
    End Sub
End Class
